/*
 * Manager.cc
 *
 *  Created on: Mar 15, 2011
 *      Author: s146009
 */

#include <iostream>
#include "Manager.h"
#include "assert.h"

Manager::Manager(string Naam, int Leeftijd, string wnType) : Werknemer(Naam,Leeftijd){
	onderGeschikten = new list<RefHandle<Werknemer> >();
	type = wnType;
}

Manager::~Manager(){
	onderGeschikten->erase(onderGeschikten->begin(), onderGeschikten->end());
	delete onderGeschikten;
	type="";
}

int Manager::berekenSalaris(){
	return 100000 + (onderGeschikten->size() * 5000);
}

void Manager::drukaf(){
	cout << toString() << endl; // endl also flushes
}

string Manager::toString(){
    stringstream stringstr;
    stringstr << "Naam: " << de_naam << ", Leeftijd : " << de_leeftijd << ", Categorie: " << type;
    stringstr << ", Heeft " << onderGeschikten->size() << " ondergeschikten.";

    return stringstr.str();
}

void Manager:: vulOndergeschiktenLijst(RefHandle<Werknemer> slaaf){
	assert(slaaf !=0);
	assert(slaaf -> getNaam() != getNaam());
	onderGeschikten->push_back(slaaf);
	cout << "slaaf is geschikt" <<endl;
}

list<RefHandle<Werknemer> >* Manager::getOndergeschiktenLijst(){
	return onderGeschikten;
}
string Manager::getType(){
	return type;
}
